/**
 * XMPProperty implementation class.
 * This class implements the XMPProperty interface for use in XMPMetaImpl.
 */

import XMPProperty from '../properties/XMPProperty';
import PropertyOptions from '../options/PropertyOptions';

/**
 * Implementation of XMPProperty interface.
 */
export default class XMPPropertyImpl implements XMPProperty {
  private value: string;
  private options: PropertyOptions;
  private language: string;

  /**
   * Creates a new XMPPropertyImpl instance.
   * @param value The property value.
   * @param options The property options.
   * @param language The property language (optional, defaults to empty string).
   */
  constructor(value: string, options: PropertyOptions, language: string = "") {
    this.value = value;
    this.options = options;
    this.language = language;
  }

  /**
   * @return Returns the value of the property.
   */
  public getValue(): string {
    return this.value;
  }

  /**
   * @return Returns the options of the property.
   */
  public getOptions(): PropertyOptions {
    return this.options;
  }

  /**
   * @return Returns the language of the property.
   */
  public getLanguage(): string {
    return this.language;
  }
}

